using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using SchoolsBI;
using System.Xml;

public partial class Profesores_Resumen : System.Web.UI.Page
{
    static Periodos per;
    protected void Page_Load(object sender, EventArgs e)
    {
        CursoSeleccion1.tipo = TipoSeleccion.Cuatrimestrales;
        CursoSeleccion1.seleciona += new CursoSelected(CursoSeleccion1_seleciona);
        CursoSeleccion1.clear += new Clear(CursoSeleccion1_clear);
        barbutton.Style["display"] = "";
        Button3.Visible = false;
        Button2.Visible = false;
        if(!IsPostBack){
            ShowListaAlumnos();

        }
    }


    #region eventos 

    void CursoSeleccion1_clear()
    {
        GridView1.Visible = false;
    }

    void CursoSeleccion1_seleciona(Periodos Periodo)
    {
        per = Periodo;
       
            ShowListaAlumnos();
            GridView1.Visible = true;
       
    }

    #endregion







    void ShowListaAlumnos() {
        
        
            if (per != null && CursoSeleccion1.Curso!="")
            {
                showTestData( biFactory.IdCurso,per.Anio);
                Button3.Visible = true;
                Button2.Visible = true;
               
            }
            else {
                ShowMsgWeb("Falta Seleccionar Algo");
            }
 

    }

    private void ShowMsgWeb(string p)
    {
        lblMensajes.Text = p;
    }
    
    private void showTestData(Int32 idCurso, Int32 Anio) {

        XmlDataAlumnos xdalumnos = new XmlDataAlumnos();
        biFactory.Per = per;

        XmlDocument osource = xdalumnos.getDataNota(idCurso, biFactory.IdMateria, per, true);

        ConDataSet(osource);
        
        barbutton.Style["Display"] = "";
        trCargaMasiva.Style["display"] = "";

        

    }

    private void ConDataSet(XmlDocument osource)
    {
        DataTable dt = new DataTable("Alumno");
        DataRow r = dt.NewRow();
        DataColumn c;

        c = new DataColumn("ID");

        c.DataType = System.Type.GetType("System.Int32");
        c.Unique = true;
        /*
          c.AutoIncrement = true;
        c.AutoIncrementSeed = 1;
        c.AutoIncrementStep = 1;
         */
        dt.Columns.Add(c);

        c = new DataColumn("Alumno");
        c.DataType = System.Type.GetType("System.String");
        c.MaxLength = 60;
        dt.Columns.Add(c);

        //cuantas notas por modalidad
        
        for (int n = 0; n < 6; n++)
        {
            c = new DataColumn("Nota" + n);
            c.DataType = System.Type.GetType("System.String");
            c.MaxLength = 60;
            dt.Columns.Add(c);

        }

        c = new DataColumn("Observacion");
        c.DataType = System.Type.GetType("System.String");
        c.MaxLength = 60;
        dt.Columns.Add(c);


        //esto arma las filas para el grid
        foreach (XmlNode xAlu in osource.SelectNodes("//alumno"))
        {
            r = dt.NewRow();
            XmlElement a = (XmlElement)xAlu;
            r["ID"] = a.GetAttribute("idAlumnoCurso");
            r["Alumno"] = a.GetAttribute("nombre");
            //mostrar la nota en funcion de la modadlidad
            int iIndex = 0;
            r["Observacion"] = "";
            foreach (XmlNode nMod in a.SelectNodes("notas[@IdPeriodo=" + biFactory.Per.IdPeriodo.ToString() + "]/nota[@IdModalidad=0]/item[1]"))
            {
                r["Nota" + iIndex] = nMod.InnerText;
                r["Observacion"] = nMod.Attributes["detalle"].Value;
                iIndex++;
            };

            dt.Rows.Add(r);
        }

        DataSet ds = new DataSet("mio");
        ds.Tables.Add(dt);


        GridView1.DataSource = dt;
        GridView1.DataBind();

        //Ocultar columnas que no uso
        for (int i = 2; i < GridView1.Columns.Count - 1; i++)
        {
            GridView1.Columns[i].Visible = (1>= i - 1);
        }


    }
    string Redondear(double value) {
        return Convert.ToString(Math.Abs(value));
    }
    protected void cmdGuardar_Click(object sender, EventArgs e)
    {
        SaveNotas();
        Button bt = (Button)sender;
        if (bt.Text != "Guardar")
        {
            Response.Redirect("Resumen.aspx");
        }
        else
        {
            ShowListaAlumnos();
        }
        

    }

    private void SaveNotas()
    {
        foreach (GridViewRow rg in GridView1.Rows)
        {
            Controles_cboNumerico cNota = ((Controles_cboNumerico)(rg.FindControl("CboNumerico1")));
            string sObser = ((TextBox)rg.FindControl("TxtObervacion")).Text;
            if (sObser.Length == 0) { sObser = "Nota Cuatrimestral"; }

            if (!cNota.Borrado)
            {
                //para las notas cuatrimestrales el nro de nota es 1
                SaveDS(Convert.ToInt32(rg.Cells[0].Text), cNota.Value, sObser,1);
            }
            else
            {
                EliminarNota(Convert.ToInt32(rg.Cells[0].Text), 1);
            }
        }
    }
    private void EliminarNota(int IdAlumnoCurso, short NotaNro)
    {
        try
        {
            SchoolsBI.Notas n = Notas.Buscar("IdAlumnoCurso =" + IdAlumnoCurso + " and IdMateria = " + biFactory.IdMateria + " and IdPeriodo = " + biFactory.Per.IdPeriodo);
            SchoolsBI.NotasModalidad nm = NotasModalidad.Buscar("idNota = " + n.IdNota + " and NroNota =" + NotaNro);
            nm.Borrar();
        }
        catch (Exception ex)
        {
        }

    }
    private void SaveDS(Int32 IdAlumnoCurso, Single nota, String Obser, Int16 NotaNro)
    {
        if (nota > -1)
        {
            SchoolsBI.Notas n = new Notas();
            n.IdMateria = biFactory.IdMateria;
            n.IdPeriodo = biFactory.Per.IdPeriodo;
            n.IdAlumnoCurso = IdAlumnoCurso;
            n.AddNotaModalidad(nota,0, Obser, NotaNro);

            n.ComentarioNota = "Nota Cuatrimestral";
            n.Crear();
        }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        ShowListaAlumnos();
    }
}
